//42 接雨水
//给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。
class Solution {
    public int trap(int[] height) {
        int n=height.length;
        int sum=0;
        int[] leftMax=new int[n];
        leftMax[0]=height[0];
        int[] rightMax=new int[n];
        rightMax[n-1]=height[n-1];
        for(int i=1;i<n;i++){
            leftMax[i]=Math.max(leftMax[i-1],height[i]);
        }
        for(int j=n-2;j>=0;j--){
            rightMax[j]=Math.max(rightMax[j+1],height[j]);
        }
        for(int i=0;i<n;i++){
            sum+=Math.min(leftMax[i],rightMax[i])-height[i];
        }
        return sum;
    }
}